/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package project.jsf.beans;

import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.helper.Validate;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

/**
 *
 * @author armen
 */
public class ListLinks {

    public static void main(String[] args) throws IOException {

        //    Validate.isTrue(args.length == 1, "usage: supply url to fetch");
        String url = "http://tert.am/en/news/2010/10/19/anc3/";
        print("Fetching %s...", url);

        Document doc = Jsoup.connect(url).get();
        Elements links = doc.select("a[href]");
        Elements media = doc.select("[src]");
        Elements imports = doc.select("link[href]");
        Elements titles = doc.select("title");
        Elements content = doc.select("p");

        print("\nMedia: (%d)", media.size());
        for (Element src : media) {
            if (src.tagName().equals("img")) {
                print(" * %s: <%s> %sx%s (%s)",
                        src.tagName(), src.attr("abs:src"), src.attr("width"), src.attr("height"),
                        trim(src.attr("alt"), 20));
            } else {
                print(" * %s: <%s>", src.tagName(), src.attr("abs:src"));
            }
        }

        print("\nImports: (%d)", imports.size());
        for (Element link : imports) {
            print(" * %s <%s> (%s)", link.tagName(), link.attr("abs:href"), link.attr("rel"));
        }

        print("\nLinks: (%d)", links.size());
        for (Element link : links) {
            print(" * a: <%s>  (%s)", link.attr("abs:href"), trim(link.text(), 35));
        }

        print("\nTitles: (%d)", titles.size());
        for (Element link : titles) {
            print(" * a: <%s>  (%s)", link.attr("abs:title"), trim(link.text(), 35));
        }
        print("\ncontent: (%d)", content.size());
        for (Element link : content) {
            print(" * a: <%s>  (%s)", link.attr("abs:p"), trim(link.text(), 800));
        }
    }

    private static void print(String msg, Object... args) {
        System.out.println(String.format(msg, args));
    }

    private static String trim(String s, int width) {
        if (s.length() > width) {
            return s.substring(0, width - 1) + ".";
        } else {
            return s;
        }
    }
}


